﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace nbb.darbo_grafikas
{
    class Darbas
    {
        public int Id { get; set; }
        public int GrafikaiId { get; set; }
        public DateTime Data { get; private set; }
        public Defektoskopas Defektoskopas { get; private set; }
        public Linija Linija { get; set; }
        public Meistrija Meistrija { get; set; }
        public Stotis Stotis { get; set; }
        public string NuoIki { get; set; }
        public Decimal KmKituKeliu { get; set; }
        public Decimal KmPagrKeliu { get; set; }
        public int VntIesmu { get; set; }
        public List<Operatorius> OperatoriuSarasas { get; set; }
        public List<KitasReikalas> KituReikaluSarasas { get; set; }
        
        public Darbas(DateTime data, Defektoskopas defektoskopas, int grafikasId=0, int id=0)
        {            
            Data = data;
            Defektoskopas = defektoskopas;
            GrafikaiId = grafikasId;
            Id = id;
            OperatoriuSarasas = new List<Operatorius>();
            KituReikaluSarasas = new List<KitasReikalas>();
        }

        public Darbas(DataRow dr,
            List<Linija> linijaStorage,
            List<Meistrija> meistrijaStorage,
            List<Stotis> stotisStorage,
            List<Defektoskopas> defektoskopasStorage,
            List<Operatorius> operatoriusStorage,
            List<KitasReikalas> kitiReikalaiStorage)
        {

        }

        static public string InsertSqlColumnsList()
        {
            return "(Grafikai_Id, Data, Defektoskopai_Id, Linijos_Id, Meistrijos_Id, Stotys_Id, Km_nuo_iki, Keliu_pagrindiniu, Keliu_kitu, Iesmu)";
        }

        public string MainInsertSqlString()
        {            
            string sql;
            string grafikai_id = string.Format("{0}", GrafikaiId);
            string data = DbCommunicator.NiceDate(Data);
            string defektoskopai_id = string.Format("{0}", Defektoskopas.Id);
            string linijos_id = string.Format("{0}", Linija == null ? 0 : Linija.Id);
            string meistrijos_id = string.Format("{0}", Meistrija == null ? 0 : Meistrija.Id);
            string stotys_id = string.Format("{0}", Stotis == null ? 0 : Stotis.Id);
            string km_nuo_iki = string.IsNullOrEmpty(NuoIki) ? "''" : string.Format("'{0}'", NuoIki);
            string keliu_pagrindiniu = string.Format("{0}", KmPagrKeliu);
            string keliu_kitu = string.Format("{0}", KmKituKeliu);
            string iesmu = string.Format("{0}", VntIesmu);
            sql = string.Format("({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})",
            grafikai_id, data,
            defektoskopai_id, linijos_id, meistrijos_id, stotys_id,
            km_nuo_iki, keliu_pagrindiniu, keliu_kitu, iesmu);
            return sql;
        }

        public string MainUpdateSqlString()
        {
            string sql;
            string linijos_id = string.Format("{0}", Linija==null ? 0 : Linija.Id);
            string meistrijos_id = string.Format("{0}", Meistrija == null ? 0 : Meistrija.Id);
            string stotys_id = string.Format("{0}", Stotis == null ? 0 : Stotis.Id);
            string km_nuo_iki = string.IsNullOrEmpty(NuoIki) ? "''" : string.Format("'{0}'", NuoIki);
            string keliu_pagrindiniu = string.Format("{0}", KmPagrKeliu);
            string keliu_kitu = string.Format("{0}", KmKituKeliu);
            string iesmu = string.Format("{0}", VntIesmu);
            sql = string.Format("Linijos_Id={0}, Meistrijos_Id={1}, Stotys_Id={2}, Km_nuo_iki={3}, Keliu_pagrindiniu={4}, Keliu_kitu={5}, Iesmu={6}",
                linijos_id, meistrijos_id, stotys_id,
                km_nuo_iki, keliu_pagrindiniu, keliu_kitu, iesmu);
            return sql;
        }

        public bool IsTheSame(Darbas kitasDarbas)
        {
            return (this.Data == kitasDarbas.Data && this.Defektoskopas.Equals(kitasDarbas.Defektoskopas));
        }
    }
}
